package com.cleaningcloud.cld.service;

import com.cleaningcloud.cld.domain.CldAttendance;
import com.cleaningcloud.cld.domain.dto.CldAttendanceDto;
import com.cleaningcloud.cld.domain.vo.CldAttendanceVo;

import java.util.List;
import java.util.Map;

/**
 * 考勤打卡Service接口
 *
 * @author cleaningcloud
 * @date 2024-11-08
 */
public interface ICldAttendanceService {
    /**
     * 查询考勤打卡
     *
     * @param attendanceId 考勤打卡主键
     * @return 考勤打卡
     */
    CldAttendanceVo selectCldAttendanceByAttendanceId(Long attendanceId);

    /**
     * 查询考勤打卡列表
     *
     * @param cldAttendance 考勤打卡
     * @return 考勤打卡集合
     */
    List<CldAttendanceVo> selectCldAttendanceList(CldAttendanceDto cldAttendance);


    /**
     * 项目分类 - 查看考勤
     *
     * @param cldAttendanceDto
     * @return
     */
    List<CldAttendanceVo> selectProjectClassificationList(CldAttendanceDto cldAttendanceDto);

    /**
     * 考勤统计
     *
     * @param cldAttendanceDto
     * @return
     */
    List<CldAttendanceVo> selectAttendanceStatisticsList(CldAttendanceDto cldAttendanceDto);

    /**
     * 新增考勤打卡
     *
     * @param cldAttendance 考勤打卡
     * @return 结果
     */
    int insertCldAttendance(CldAttendance cldAttendance);

    /**
     * 修改考勤打卡
     *
     * @param cldAttendance 考勤打卡
     * @return 结果
     */
    int updateCldAttendance(CldAttendance cldAttendance);


    /**
     * 批量修改
     *
     * @param cldAttendances
     * @return
     */
    int batchUpdateAttendance(List<CldAttendance> cldAttendances);

    /**
     * 批量删除考勤打卡
     *
     * @param attendanceIds 需要删除的考勤打卡主键集合
     * @return 结果
     */
    int deleteCldAttendanceByAttendanceIds(Long[] attendanceIds);

    /**
     * 删除考勤打卡信息
     *
     * @param attendanceId 考勤打卡主键
     * @return 结果
     */
    int deleteCldAttendanceByAttendanceId(Long attendanceId);


    /**
     * 项目考勤查看
     *
     * @param cldAttendanceDto
     * @return
     */
    Map<String, Object> getTableCalendarList(CldAttendanceDto cldAttendanceDto);

    /**
     * 在岗员工考勤查看 日历
     *
     * @param cldAttendanceDto
     * @return
     */
    Map<String, Object> getCalendarByStaffId(CldAttendanceDto cldAttendanceDto);


}
